package com.sfx.算法专题.双指针.同向双指针.普通双指针;

/**
 * Created with IntelliJ IDEA.
 * Description:https://leetcode.cn/problems/move-zeroes/
 * User: sfx
 * Date: 2023-07-18
 * Time: 12:26
 */
public class Code_2_moveZeroes {

    static class Solution {
        public void moveZeroes(int[] nums) {
            //前后指针
            //cur : 遍历数组元素
            //dest : 表示非零元素的最后一个位置
            //两个指针就把区间划分为3份
            //[0,dest] : 全部为非零元素
            //[dest+1,cur-1] : 全部为零元素
            //[cur...最后] : 待处理元素
            //两个指针一直维持这个性质,当cur到达末尾的时候
            //就会把数组分为两个部分非零和零
            int cur = 0;
            int dest = -1;
            while(cur < nums.length) {
                if(nums[cur] != 0) {
                    int tmp = nums[cur];
                    nums[cur] = nums[dest+1];
                    nums[dest+1] = tmp;
                    ++dest;
                }
                cur++;
            }
        }
    }


}